package fr.greta.centre.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import fr.greta.centre.metier.Formateur;


public class FormateurDAOImpl implements FormateurDAO{

	
	
	public boolean delete(int idPersonne) throws SQLException {
		Connection connect = Bd.getConnect();
		String sql = "DELETE FROM formateur WHERE id_formateur = "+idPersonne;
		
		connect.createStatement().execute(sql);
		
		return true;
	}	
	public Formateur findByKey(int idPersonne) throws SQLException {
		Connection connect = Bd.getConnect();
		String sql = "SELECT * FROM formateur WHERE id_formateur = "+idPersonne;
		ResultSet resultat;
		
		try {
			resultat = connect.createStatement().executeQuery(sql);
			resultat.first();
			Formateur leFormateur = new Formateur(idPersonne, resultat.getString("nom"), resultat.getString("prenom"), resultat.getString("tel"), resultat.getString("email"), resultat.getString("cp"), resultat.getString("ville"), resultat.getString("adresse"), resultat.getString("url"), resultat.getInt("ex"), resultat.getString("domaine_intervention"));
			return leFormateur;	
			
		} catch (SQLException e) {
			System.out.println("erreur");
			e.printStackTrace();
		}
		

		return null;
	}	
	public ArrayList<Formateur> findAll() throws SQLException {
		
		Connection connect = Bd.getConnect();
		String sql = "SELECT * FROM formateur";
		ResultSet resultat;
		ArrayList<Formateur> lesFormateurs = new ArrayList<Formateur>();
		
		try {
			resultat = connect.createStatement().executeQuery(sql);
			while( resultat.next()){
				Formateur unFormteur = new Formateur(resultat.getInt("id_formateur"), resultat.getString("nom"), resultat.getString("prenom"), resultat.getString("tel"), resultat.getString("email"), resultat.getString("cp"), resultat.getString("ville"), resultat.getString("adresse"), resultat.getString("url"), resultat.getInt("ex"), resultat.getString("domaine_intervention"));
				lesFormateurs.add(unFormteur);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return lesFormateurs;	}	
	
	
	public int save(Formateur formateur) {
		// Le prerequis
		assert formateur != null;
		int i = 0;
		try {

			Statement st = Bd.getConnect().createStatement();
			System.out.println(st);
			String s = "INSERT INTO `centre_formation`.`formateur` (`nom`,`prenom`,`email`,`tel`,`cp`,`ville`,`adresse`,`ex`,`url`,`domaine_intervention`) VALUES ('"
					+ formateur.getNom()
					+ "', '"
					+ formateur.getPrenom()
					+ "','"
					+ formateur.getEmail()
					+ "', '"
					+ formateur.getTel()
					+ "','"
					+ formateur.getCp()
					+ "','"
					+ formateur.getVille()
					+ "','"
					+ formateur.getAdresse()
					+ "','"
					+ formateur.isEx()
					+ "','"
					+ formateur.getUrl()
					+ "','"
					+ formateur.getDomaineIntervention() + "')";
			System.out.println(s);
			st.executeUpdate(s);

			String ss = "SELECT MAX(id_formateur) AS LastID FROM formateur";
			ResultSet r = st.executeQuery(ss);
			r.next();
			i = r.getInt("LastID");
			System.out.println("insert ok" + " " + i);
			formateur.setId(i);
			return i;
		}

		catch (SQLException e) {
			System.out.println(e.getMessage());
			
		}
		return i;
	}
	
	public boolean updateFormateur(Formateur formateur) throws SQLException {
		//Atention il faut entrer un formateur avec un ID != 0
		try {
			String sql = "UPDATE formateur SET nom=?, prenom=?, tel=?, email=?, ville=?, adresse=?, cp=?, ex=?, id_formateur=?, url=?, domaine_intervention=?"
					+ " WHERE id_formateur = ?";
			PreparedStatement st = Bd.getConnect().prepareStatement(sql);
			st.setString(1, formateur.getNom());
			st.setString(2, formateur.getPrenom());
			st.setString(3, formateur.getTel());
			st.setString(4, formateur.getEmail());
			st.setString(5, formateur.getVille());
			st.setString(6, formateur.getAdresse());
			st.setString(7, formateur.getCp());
			st.setInt(8, formateur.isEx());
			st.setInt(9, formateur.getId());
			st.setString(10, formateur.getUrl());
			st.setString(11, formateur.getDomaineIntervention());
			st.setInt(12, formateur.getId());
			st.executeUpdate();
			return true;
		} catch (SQLException e) {
			e.printStackTrace();
			throw e;
		}

	}
	
	

}
